package com.ydlclass.channelhandler;

import com.ydlclass.channelhandler.handler.MySimpleChannelInboundHandler;
import com.ydlclass.channelhandler.handler.YrpcRequestEncoder;
import com.ydlclass.channelhandler.handler.YrpcResponseDecoder;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;

/**
 * 这个类的作用是初始化 Netty 的 SocketChannel 的管道（ChannelPipeline），为基于 Netty 的网络通信配置处理流程。
 * 
 */
public class ConsumerChannelInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel socketChannel) throws Exception {
        //为Channel的pipeline添加各类处理器
        socketChannel.pipeline()
            // netty自带的日志处理器
            .addLast(new LoggingHandler(LogLevel.DEBUG))
            // 消息编码器（对客户端的请求进行编码）
            .addLast(new YrpcRequestEncoder())
            // 入站的解码器（对服务端的响应进行解码）
            .addLast(new YrpcResponseDecoder())
            // 处理结果
            .addLast(new MySimpleChannelInboundHandler());
        
    }
}
